
package com.cainli.task;

/**
 * 单任务的容器，此容器内任务一次只能执行一个，如果上一个任务未执行完而执行下一个任务
 * 则上一个任务将被取消（cancel）
 * 
 *
 */
public class SingleTaskContainer {
    private Task task;
    
    /**
     * 执行某个任务，如果当前有任务正在执行或者等待执行(延迟一定时间后执行)，
     * 则当前任务会被取消
     * @param task
     */
    public void executeTask(Task task){
        if (task != null) {
            task.cancel(false);
        }
        this.task = task;
        task.execute();
    }
    
    /**
     * 执行某个任务，如果当前有任务正在执行或者等待执行(延迟一定时间后执行)，
     * 则当前任务会被取消
     * @param task
     */
    public void executeTask(Task task,int delay){
        if (task != null) {
            task.cancel(false);
        }
        this.task = task;
        task.execute(delay);
    }
}
